﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CRMBussines
{
    public partial class CrmBussines : IDisposable
    {
        public List<Regione> ObtenRegiones()
        {
            List<Regione> res = new List<Regione>();

            db = new CRMModelControladorDataContext(_cadenaConexion);
            var zns = (from zon in db.Regiones select zon);
            res = zns.ToList<Regione>();

            return res;
        }

        public Regione ObtenRegion(int id)
        {
            Regione de = new Regione();

            db = new CRMModelControladorDataContext(_cadenaConexion);
            de = db.Regiones.Single(c => c.RegionesId == id);

            return de;
        }

        public void GuardaRegion(Regione regiones)
        {
            db = new CRMModelControladorDataContext(_cadenaConexion);
            db.Regiones.InsertOnSubmit(regiones);
            db.SubmitChanges();
        }

        public void ActualizaRegion(Regione region)
        {
            Regione zon = new Regione();
            db = new CRMModelControladorDataContext(_cadenaConexion);
            zon = db.Regiones.Single(c => c.RegionesId == region.RegionesId);
            zon.Descripcion = region.Descripcion;

            db.SubmitChanges();
        }

        public void EliminaRegion(int id)
        {
            Regione zon = new Regione();

            db = new CRMModelControladorDataContext(_cadenaConexion);
            zon = db.Regiones.Single(c => c.RegionesId == id);
            db.Regiones.DeleteOnSubmit(zon);
            db.SubmitChanges();
        }


        public IQueryable<resultadoDetalleRegion> ObtenRegionesDetalles(int id)
        {


            db = new CRMModelControladorDataContext(_cadenaConexion);

            IQueryable<resultadoDetalleRegion> res = (from x in db.DetalleRegiones
                                                    where x.RegionesId == id
                                                      select new resultadoDetalleRegion()
                                                    {
                                                        DetalleRegionesId = x.DetalleRegionesId,
                                                        RegionId = x.RegionesId,
                                                        Zona = x.Zona.Descripcion,
                                                        ZonaId = x.ZonasId
                                                    }
                                            );


            return res;
        }

        public DetalleRegione ObtenRegionDetalle(int id)
        {
            DetalleRegione de = new DetalleRegione();

            db = new CRMModelControladorDataContext(_cadenaConexion);
            de = db.DetalleRegiones.Single(c => c.DetalleRegionesId == id);

            return de;
        }

        public void GuardaRegionDetalle(DetalleRegione detalle)
        {
            db = new CRMModelControladorDataContext(_cadenaConexion);
            db.DetalleRegiones.InsertOnSubmit(detalle);
            db.SubmitChanges();
        }

        public void ActualizaRegionDetalle(DetalleRegione detalle)
        {
            DetalleRegione zon = new DetalleRegione();
            db = new CRMModelControladorDataContext(_cadenaConexion);
            zon = db.DetalleRegiones.Single(c => c.DetalleRegionesId == detalle.DetalleRegionesId);
            zon.ZonasId = detalle.ZonasId;
            db.SubmitChanges();
        }

        public void EliminaRegionDetalle(int id)
        {
            DetalleRegione zon = new DetalleRegione();

            db = new CRMModelControladorDataContext(_cadenaConexion);
            zon = db.DetalleRegiones.Single(c => c.DetalleRegionesId == id);
            db.DetalleRegiones.DeleteOnSubmit(zon);
            db.SubmitChanges();
        }   
    }

    public class resultadoDetalleRegion
    {
        public int DetalleRegionesId { get; set; }
        public int RegionId { get; set; }
        public string Zona { get; set; }
        public int ZonaId { get; set; }
    }
}
